home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
language
/
embedded
/
68hc11
/
clock_co.txt
< prev
next >
Wrap
Text File
|
1994-10-20
|
6KB
|
122 lines
Clock time print string....
1062 c2da 43 4c 4f 43 4b 20 MSG3 FCC 'CLOCK VALUE IS NOW:'
56 41 4c 55 45 20
49 53 20 4e 4f 57
3a
1063 c2ed 0d 04 FCB CR,04
Stuff Deleted.....
1091 c434 0d 04 FCB CR,4
1092 c436 44 55 4d 4d 59 20 MSG17 FCC 'DUMMY '
1093 c43c 00 00 NEXTLOC FDB 0
1094 c43e 00 00 OLDLOC FDB 0
1095 c440 PRTCLK EQU *
1096 c440 ce c2 da LDX #MSG3
1097 c443 bd e4 fd JSR OUTSTRG0
1098 c446 bd c4 71 JSR READCLK
1099 c449 ce c4 d5 LDX #YEAR
1100 c44c bd e4 e4 JSR OUT1BSP
1101 c44f ce c4 d4 LDX #MONTH
1102 c452 bd e4 e4 JSR OUT1BSP
1103 c455 ce c4 d3 LDX #DATE
1104 c458 bd e4 e4 JSR OUT1BSP
1105 c45b ce c4 d1 LDX #HOURS
1106 c45e bd e4 e4 JSR OUT1BSP
1107 c461 ce c4 d0 LDX #MINS
1108 c464 bd e4 e4 JSR OUT1BSP
1109 c467 ce c4 cf LDX #SECS
1110 c46a bd e4 e4 JSR OUT1BSP
1111 c46d bd e4 ed JSR OUTCRLF
1112 c470 39 RTS
This is the tricky part - if you got here from an interrupt, you COULD have been
in the process of reading the clock, which means the door is open - if you then
access that memory location, the value in memory and/or clock will be scrambled -
so make SURE that before you do anything else, you reset the access to start
from the beginning of the sequence -- this hung me up for weeks! --BW
1113 c471 READCLK EQU *
This section opens the door to the clock - note the funnyness of stuffing bits
into the right location - not bytes....
1114 c471 18 ce 00 64 LDY #100
1115 c475 b6 7f f0 RC1 LDAA CLOCK MAKE SURE CLOCK ACCESS OFF - COULD BE
1116 c478 18 09 DEY STILL OPEN IF HERE AFTER SW RESET...
1117 c47a 26 f9 BNE RC1
1118 c47c 18 ce 00 00 LDY #0 ZERO WRITE COUNTER
1119 c480 ce c4 c5 LDX #ATABLE-1 POINT X TO 1 BYTE BEFORE ACCESS TABLE
1120 c483 86 a3 LDAA #$A3
1121 c485 b7 c4 c8 STAA THEA3 ENABLE ACCESS TABLE
1122 c488 b6 7f f0 LDAA CLOCK RESET COMPARISON REGISTER
1123 c48b LOOP10 EQU *
1124 c48b 08 INX
1125 c48c 8c c4 ce CPX #ETABLE
1126 c48f 27 0f BEQ ENDACC POINT X AT NEXT BYTE OF ACCESS CODE
1127 c491 c6 08 LDAB #8
1128 c493 a6 00 LDAA 0,X GET NEXT BYTE OF ACCESS CODE
1129 c495 LOOP12 EQU *
1130 c495 b7 7f f0 STAA CLOCK STORE BIT INTO D0 OF CLOCK ADDRESS
1131 c498 46 RORA
1132 c499 LOOP13 EQU *
1133 c499 18 08 INY INCREMENT WRITE COUNTER
1134 c49b 5a DECB DECREMENT COUNTER IN B
1135 c49c 26 f7 BNE LOOP12 IF NOT WRITTEN 8 TIMES, CONTINUE
1136 c49e 20 eb BRA LOOP10 OTHERWISE, GET NEXT BYTE OF ACCESS CODE
1137 c4a0 ENDACC EQU *
Once the door is open, we can now read the time - setting it is essentially
the reverse procedure....
1138 c4a0 READC EQU * READ THE CLOCK AFTER ACCESS SET
1139 c4a0 86 00 LDAA #0
1140 c4a2 97 00 STAA COUNT
1141 c4a4 ce c4 cd LDX #CDATO-1
1142 c4a7 RL10 EQU *
1143 c4a7 08 INX
1144 c4a8 8c c4 d6 CPX #COEND
1145 c4ab 27 16 BEQ ENDREAD END OF READ CLOCK ROUTINE
1146 c4ad 18 ce 00 08 LDY #8
1147 c4b1 86 00 LDAA #0 CLEAR REGISTER A
1148 c4b3 RL11 EQU *
1149 c4b3 f6 7f f0 LDAB CLOCK READ BYTE (BIT IN POSITION 0 WITH A2 HIGH)
1150 c4b6 56 RORB ROTATE LS BIT INTO CARRY FROM REG B
1151 c4b7 46 RORA ROTATE CARRY INTO LS BIT POSITION REG A
1152 c4b8 7c 00 00 INC COUNT INCREMENT CYCLE COUNTER
1153 c4bb 18 09 DEY DECREMENT Y
1154 c4bd 26 f4 BNE RL11 IF NOT DONE 8 TIMES, DO IT AGAIN
1155 c4bf a7 00 STAA 0,X STORE INTO CLOCK DATA OUT TABLE
1156 c4c1 20 e4 BRA RL10 GO GET NEXT BYTE
1157 c4c3 ENDREAD EQU *
1158 c4c3 39 RTS
1159 c4c4 00 00 NOVALS FDB 0
1160 c4c6 ATABLE EQU * CLOCK ACCESS TABLE
1161 c4c6 c5 3a FCB $C5,$3A
1162 c4c8 a3 5c c5 3a a3 5c THEA3 FCB $A3,$5C,$C5,$3A,$A3,$5C
1163 c4ce ETABLE EQU *
1164
1165 c4ce CDATO EQU *
1166 c4ce 00 SEC10S FCB 0
1167 c4cf 00 SECS FCB 0
1168 c4d0 00 MINS FCB 0
1169 c4d1 00 HOURS FCB 0
1170 c4d2 00 DAY FCB 0
1171 c4d3 00 DATE FCB 0
1172 c4d4 00 MONTH FCB 0
1173 c4d5 00 YEAR FCB 0
1174 c4d6 COEND EQU *
1175 c4d6 ESN EQU *
1176 c4d6 BUFFER EQU *
1177 c4d6 RMB 100
1178 c53a ENDBUF EQU *
1179 c53a DATASTRT EQU *
1180 de00 ENDDATA EQU $DE00